Voice processing systems have become prevalent in modern day society. Such systems typically involve a telephone caller dialing into a computerized integrated voice response (IVR) system. The interaction between the remote user dialing in and the computerized system varies widely and is application specific. Typical examples of such systems include banking systems which allow a user to transfer funds between accounts and ascertain account balances, credit card corporation systems, etc.
Recently, it has also become popular to merge together these voice processing systems with facsimile, e-mail and other capabilities. One such example is what is termed fax-on-demand. In fax-on-demand systems, a remote user dials in to a computer and enters through his telephone keypad the digits corresponding to a particular item or product number. Additionally, a facsimile number may be entered via a touch tone keypad, and is interpreted by this system. The fax-on-demand system then transmits documentation regarding the particular item or product to a facsimile machine located at the specified remote telephone number.
In view of the evolving and complex nature of many of today's modern voice or call processing systems, it has become standard to construct such voice processing systems from a plurality of different client applications. The voice processing applications may include fax-on-demand, voice mail, etc., all interconnected via a local area network or other such means.
It has also become fairly standard to utilize voice processing resources flexibly between calls. For example, typical voice processing resources include such items as tone detectors for detecting the digits entered via a DTMF keypad, echo cancellors for filtering echo from the telephone network, voice recognition software for allowing a remote user to input commands via voice, etc.
One problem with such systems is that the voice processing applications, as well as the resources, tend to vary widely in their design and implementation. Multiple vendors each implements their systems differently and it is difficult for these items to work together. Additionally, the systems are not very flexible because there usually exists a set of circuit boards on a single platform for implementing all of the required call processing functions. Once the resources on the platform are used up, calls simply cannot be processed and are instead blocked.
The other problem comes from the use of redundant servers to achieve fault tolerance at the server level by shadowing between a primary functional component on a server and its standby functional component on another server. Both the servers keep the same record of availability information of the required resources on the platforms by synchronization process at an interval of time, so that the standby functional component can take over the tasks previously carried out by the primary component when the latter stops operating. However, the record for the standby component may be out-of-date if the call has changed its requested services after last synchronization since the synchronization is always implemented at an interval of time.
In view of the foregoing, there exists a need in the art for a more flexible and configurable voice processing system which can optimally utilize the resources of a variety of different vendors in a variety of different configurations. The system should also permit an application to operate irrespective of different types of locations of resources (tone detectors, signal generators, etc.) that are being used to implement the voice processing application. Furthermore, the system should also permit the resources be selected based on an up-to-date information on availability of the required resources whenever a functional component on a server is required to start operating.